Link Aggregation is a computer networking term describing the use of multiple network cables, or ports, in parallel to increase link speed beyond the limits of any one single cable, or port, and to increase redundancy for higher availability. Most implementations of Link Aggregation conform to the IEEE (Institute of Electrical and Electronics Engineers) 802.3-2005 Ethernet standard. Other terms for Link Aggregation include, for example, “ethernet trunk,” “NIC teaming,” “port channel,” “port teaming,” “port trunking,” “link bundling,” “Ethernet channel,” “multilink trunking,” “NIC bonding,” and “network fault tolerance.”
A processing engine in a network switch is responsible for Link Aggregation of switched packets. The processing engine handles unicast and multicast forwarding, as well as packet flooding. The processing engine may also support hash-based Link Aggregation for Open Systems Interconnection (OSI) Layer 2 and Layer 3 switched packets, as well as pseudowire switched packets. For Layer 3, the processing engine may include Equal Cost Multi-Path (or ECMP) support, as well.
The most common way to balance traffic in a Link Aggregation group (LAG) is using Layer 3 hashes. These hashes are calculated when the first LAG connection is established and are then kept in a network device's memory for future use. This effectively limits the client bandwidth in an aggregate to its single member's bandwidth per session.
In a traffic-engineered LAG, users are often able to pick a primary port and a backup port within a virtual local area network (or VLAN). One of the weaknesses of a traditional processing engine (with respect to Link Aggregation) is the need to perform a content addressable memory (or CAM) lookup (e.g., a ternary CAM or TCAM lookup) to acquire information regarding the primary and backup port for forwarding packets in a Link Aggregation group. Solutions based on a TCAM lookup have various scalability and performance issues. For example, in a traditional network device or switch, when an incoming packet is received, the packet's destination address is used in a forwarding database lookup to determine the Link Aggregation group to which the packet should be forwarded. Then, based on the Link Aggregation group and the VLAN identification (VLAN ID) associated with the packet, a TCAM lookup is performed to determine the primary port for forwarding the packet. However, if the primary port is not functioning/operational (e.g., if a link is down in the software), then the lookup process must be repeated to determine the backup port, which can slow down the forwarding process. Additionally, this process requires that there be separate entries in the TCAM for both the primary port and the backup port, which creates a scalability issue, inasmuch as storage in a TCAM is expensive.